package com.wgy.day29多线程.线程状态之等待唤醒状态;

/*
 顾客/吃货线程:对包子的状态进行判断
                false 没有包子  吃货线程等待
                true 有包子 吃货线程吃包子-->吃完包子-->修改包子的状态为 没有-->吃货线程唤醒包子铺线程
*/
public class ChiHuo extends Thread {
    private BaoZi baozi;

    public ChiHuo(BaoZi baozi) {
        this.baozi = baozi;
    }

    //设置吃货线程任务
    @Override
    public void run() {
        while(true){
            synchronized (baozi){
                if(baozi.flag==false){
                    try {
                        baozi.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                //被唤醒之后执行的代码 吃包子
                System.out.println("吃货正在吃:"+baozi.pi+baozi.xian+"的包子");
                //吃货花了3秒吃完包子,修改包子的状态为没有
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("吃货3秒后把"+baozi.pi+baozi.xian+"的包子吃完了");
                baozi.flag=false;
                baozi.notify();
                System.out.println("包子铺开始生产包子");
                System.out.println("==============");

            }

       }
    }
}
